The present invention relates generally to the analysis of race conditions, and more specifically to the design-time analysis of workflows to detect and correct race conditions.
Complex, modular, and distributed large-scale workflow systems are emerging as a methodology to allow actionable insights to be extracted from the plethora of information now flowing to decision makers. Workflow systems have various techniques for representing workflows. For example, one commonly-used workflow representation is a Unified Modeling Language (“UML”) activity diagram. Workflow systems can include, for example, analytics systems and business process systems. As the complexity and size of a workflow representation increases, the opportunities for difficult to debug logic errors to arise increase rapidly.
One challenging logic error to debug is a race condition. A race condition occurs when different executions of a workflow representation produce different results depending on the order of component execution, i.e., when the order is logically “under-restricted.” Because these logic errors are nondeterministic, they are hard to replicate, and thus are extremely hard to debug at run-time. In one example, in an analytics system's workflow representation in which one consumer analytic node is designed to receive input from two producer analytic nodes, if the workflow representation is under-restricted, then the output of the consumer analytic node may depend on the order of execution of the two producer analytic nodes, with respect to each other or with respect to the consumer analytic node. In another example, in a business process system's workflow representation in which multiple purchase approval nodes provide input to a purchase order node, if the workflow representation is under-restricted, then the purchase order node output may be similarly unpredictable.